package AsignacionDeRevisores;
import callForPapers.*;
import sistema.*;

import java.util.ArrayList;
import java.util.List;



public class AsignacionPorMayoria extends AsignacionDeRevisores {
	/** Se elijen los que tienen la mitad m�s 1 de �reas de inter�s en com�n con el paper
	* (es  decir  son  expertos)  y  se  elijen  3.  si no  existen  3  
	* revisores expertos se completa con revisores al azar.  
	* A los 
	 * @return 
	*/

	
	public void asignarRevisores(CallForPaper cfp){
		// conversion Set a List
		List<Usuario> revisores = new ArrayList<Usuario>();
				revisores.addAll(this.obtenerListaDeRevisores(cfp));
		List<Paper> papers = new ArrayList<Paper>();
				papers.addAll(this.obtenerListaDePapers(cfp));
		
		
		for (Paper paperActual: papers){
			List<Paper> unicoPaper = new ArrayList<Paper>();
				unicoPaper.add(paperActual);
			// Hago una lista con usuarios expertos
			List<Usuario> expertos = new ArrayList<Usuario>();
				expertos.addAll(super.filtrarRevisoresExpertos(revisores,paperActual));
			// Completa la lista con revisores al azar.
			List<Usuario> listaUsrFinal = new ArrayList<Usuario>();
				listaUsrFinal.addAll(completarListaRevisoresAlAzar( revisores,expertos));	
			// Ejecuta el método de la superclase
			super.asignarPapersARevisores( listaUsrFinal,unicoPaper);
		}
		

	}
}